using System;
using Sinacor.Infra.UI.Common;
using Sinacor.Infra.UI.Security.Services;
using System.Collections.Generic;
using Sinacor.Infra.Common;
using Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Bovespa.ManutencaoOrdens.Titulo;

namespace Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Translator.ModelToDataContract
{

    /// <summary>
    /// Traduz um modelo para um contrato de dados
    /// </summary>
    [Serializable]
    public class Titulo
    {

        public Titulo() { }

		/// 
		/// <param name="from"></param>
        public ConsultarTituloCodigoRequest ToConsultarTituloCodigoRequest(Model.Parameter.FiltroTitulo from)
        {
            ConsultarTituloCodigoRequest retorno = new ConsultarTituloCodigoRequest();                

            if (from == null)
                return null;

            retorno.CodigoNegociacao = from.CodigoNegocio;
            retorno.DataOrdem = from.DataPregao;

            if (from.Mercado != null)
            {
                switch (from.Mercado)
                {
                    case Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.Vista:
                        retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Bovespa.ManutencaoOrdens.Titulo.TipoMercado.Vista;
                        break;
                    case Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.OpcaoCompra:
                        retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Bovespa.ManutencaoOrdens.Titulo.TipoMercado.OpcaoCompra;
                        break;
                    case Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.OpcaoVenda:
                        retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Bovespa.ManutencaoOrdens.Titulo.TipoMercado.OpcaoVenda;
                        break;
                    case Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.ExercicioOpcaoCompra:
                        retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Bovespa.ManutencaoOrdens.Titulo.TipoMercado.ExercicioOpcaoCompra;
                        break;
                    case Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.ExercicioOpcaoVenda:
                        retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Bovespa.ManutencaoOrdens.Titulo.TipoMercado.ExercicioOpcaoVenda;
                        break;
                    case Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.Fracionario:
                        retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Bovespa.ManutencaoOrdens.Titulo.TipoMercado.Fracionario;
                        break;
                    case Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.Estruturado:
                        retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Bovespa.ManutencaoOrdens.Titulo.TipoMercado.Estruturado;
                        break;
                    case Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.Leilao:
                        retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Bovespa.ManutencaoOrdens.Titulo.TipoMercado.Leilao;
                        break;
                    case Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.Termo:
                        retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Bovespa.ManutencaoOrdens.Titulo.TipoMercado.Termo;
                        break;
                    case Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.LeilaoNaoCotados:
                        retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Bovespa.ManutencaoOrdens.Titulo.TipoMercado.LeilaoNaoCotados;
                        break;
                    case Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.Futuro:
                        retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Bovespa.ManutencaoOrdens.Titulo.TipoMercado.Futuro;
                        break;
                    case Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.VencimentoFuturo:
                        retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Bovespa.ManutencaoOrdens.Titulo.TipoMercado.VencimentoFuturo;
                        break;
                    case Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.BOX:
                        retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Bovespa.ManutencaoOrdens.Titulo.TipoMercado.BOX;
                        break;
                    case Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.CotasETF:
                        retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Bovespa.ManutencaoOrdens.Titulo.TipoMercado.CotasETF;
                        break;
                    case Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMercado.IntegralizacaoResgateCotas:
                        retorno.Mercado = Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Bovespa.ManutencaoOrdens.Titulo.TipoMercado.IntegralizacaoResgateCotas;
                        break;
                }
            }

            return retorno;
		}

	}

}